package com.cardbaobao.cardbabyclient.ui.helper;
import android.os.Parcel;
import android.os.Parcelable;
import com.cardbaobao.cardbabyclient.utils.LogUtils;
import com.cardbaobao.cardbabyclient.utils.ToastUtil;

import java.math.BigDecimal;

/**
 * Created by Jiangzx on 2017/9/26 10:31.
 */

public class DebitHelper {
    public static class CalculateBean implements Parcelable {
        /**应付金额*/
        private double amount;
        /**手续费*/
        private double fee;
        /**到账金额*/
        private double space;

        public double getAmount() {
            return amount;
        }

        public void setAmount(double amount) {
            this.amount = amount;
        }

        public double getFee() {
            return fee;
        }

        public void setFee(double fee) {
            this.fee = fee;
        }

        public double getSpace() {
            return space;
        }

        public void setSpace(double space) {
            this.space = space;
        }

        @Override
        public int describeContents() {
            return 0;
        }

        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeDouble(this.amount);
            dest.writeDouble(this.fee);
            dest.writeDouble(this.space);
        }

        public CalculateBean() {
        }

        public CalculateBean(double amount, double fee, double space) {
            this.amount = amount;
            this.fee = fee;
            this.space = space;
        }

        protected CalculateBean(Parcel in) {
            this.amount = in.readDouble();
            this.fee = in.readDouble();
            this.space = in.readDouble();
        }

        public static final Parcelable.Creator<CalculateBean> CREATOR = new Parcelable.Creator<CalculateBean>() {
            @Override
            public CalculateBean createFromParcel(Parcel source) {
                return new CalculateBean(source);
            }

            @Override
            public CalculateBean[] newArray(int size) {
                return new CalculateBean[size];
            }
        };
    }
    public static CalculateBean calculateFee(String amount,
                                             String discount,
                                             String  rate,
                                             String eachCharge){
        try{
            LogUtils.d(
                    ",rate:"+rate+
                    ",discount:"+discount+
                    ",charge:"+eachCharge);

            BigDecimal per=new BigDecimal("100.0");

            BigDecimal input=new BigDecimal(amount);
            //交易手续费 交易额 * 扣率
            BigDecimal tranFee= input.multiply(
                    new BigDecimal(discount)).
                    divide(per,2,BigDecimal.ROUND_HALF_UP);
            //费率-扣率
            BigDecimal temp=new BigDecimal(rate).
                    subtract(new BigDecimal(discount));
            //结算手续费 （交易额-交易手续费） * （费率-扣率）+单笔提现费
            BigDecimal settleFee=input.subtract(tranFee).multiply(temp).
                    divide(per,2,BigDecimal.ROUND_HALF_UP).
                    add(new BigDecimal(eachCharge));
            //手续费 交易手续费+结算手续费
            BigDecimal fee=tranFee.add(settleFee);
            //到账金额
            BigDecimal arr=input.subtract(fee);

            return new CalculateBean(input.doubleValue(),
                    fee.doubleValue(),
                    arr.doubleValue());
        }catch (Exception e){
            e.printStackTrace();
            return new CalculateBean();
        }
    }
    /**
     * 检查输入金额
     * @param amount 输入金额
     * @return 是否命中规则
     */
    public static boolean checkInputAmount(String amount){
        boolean result=true;
        try{
            double numberD=Double.parseDouble(amount);
            if(numberD>=1000){
                int index=amount.indexOf('.');
                if(index!=-1){
                    //小数，判断是否是“整数”
                    long numberL= (long) numberD;
                    if(numberD==numberL){
                        //整数
                        //判断是否被100整除
                        if(numberL%100==0){
                            ToastUtil.showToast("输入金额不能为整数，例如1000、1111、1222...1999等");
                            result=false;
                        }else{
                            //不能是1111、1222之类的数
                            //算法...转成字符串，截取[1,)，判断截取部分是否全是同一个数字，如果是，不通过
                            String check=String.valueOf(numberL).substring(1);
                            boolean same=true;
                            for(int i=0;i<check.length();i++){
                                if(check.charAt(i)!=check.charAt(0)){
                                    same=false;
                                    break;
                                }
                            }
                            if(same){
                                ToastUtil.showToast("输入金额不能为整数，例如1000、1111、1222...1999等");
                                result=false;
                            }
                        }
                    }
                }else{
                    //整数
                    long numberL=Long.parseLong(amount);
                    //整数
                    //判断是否被100整除
                    if(numberL%100==0){
                        ToastUtil.showToast("输入金额不能为整数，例如1000、1111、1222...1999等");
                        result=false;
                    }else{
                        //不能是1111、1222之类的数
                        //算法...转成字符串，截取[1,)，判断截取部分是否全是同一个数字，如果是，不通过
                        String check=String.valueOf(numberL).substring(1);
                        boolean same=true;
                        for(int i=0;i<check.length();i++){
                            if(check.charAt(i)!=check.charAt(0)){
                                same=false;
                                break;
                            }
                        }
                        if(same){
                            ToastUtil.showToast("输入金额不能为整数，例如1000、1111、1222...1999等");
                            result=false;
                        }
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            ToastUtil.showToast("非法数字，请重新输入");
            result=false;
        }
        return result;
    }
}
